package com.wiselink.naver.productcatalog.request;

import com.wiselink.naver.productcatalog.request.base.*;
import com.wiselink.naver.productcatalog.request.common.ImageHomeAppliances;
import com.wiselink.naver.productcatalog.request.common.MicroNavigationAppliances;
import com.wiselink.naver.productcatalog.request.common.MusicalSport;
import com.wiselink.naver.productcatalog.request.common.SeasonOfficeAppliances;
import com.wiselink.naver.productcatalog.request.enums.ProductInfoProvidedNoticeType;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * 商品信息提供公告
 */
@Getter
@Setter
@ToString(callSuper = true)
public class ProductInfoProvidedNotice {
    /**
     * 商品信息提供公告商品群类型
     * 代表商品摘要信息的类型。 必须从子要素中选择一个进行输入，输入类型的字段信息将被登记。
     * 상품정보제공고시 상품군 유형
     * 상품 요약 정보를 나타내는 타입입니다. 하위 요소 중 하나를 선택해서 입력해야 하며 입력한 타입의 필드 정보가 등록됩니다.
     */
    private ProductInfoProvidedNoticeType productInfoProvidedNoticeType;
    /**
     * 服装商品信息提供公告
     * 의류 상품정보제공고시
     */
    private Wear wear;
    /**
     * 皮鞋/鞋类商品信息提供公告
     * 구두/신발 상품정보제공고시
     */
    private Shoes shoes;
    /**
     * 包包商品信息提供公告
     * 가방 상품정보제공고시
     */
    private Bag bag;
    /**
     * 时尚杂货（帽子/腰带/饰品）商品信息提供公告
     * 패션잡화(모자/벨트/액세서리) 상품정보제공고시
     */
    private FashionItems fashionItems;
    /**
     * 床上用品/窗帘商品信息提供公告
     * 침구류/커튼 상품정보제공고시
     */
    private SleepingGear sleepingGear;
    /**
     * 家具（床/沙发/水槽/DIY产品）商品信息提供公告
     * 가구(침대/소파/싱크대/DIY제품) 상품정보제공고시
     */
    private Furniture furniture;
    /**
     * 影像家电（TV类）商品信息提供告示
     * 영상가전(TV류) 상품정보제공고시
     */
    private ImageAppliances imageAppliances;
    /**
     * 家用电器（冰箱/洗衣机/洗碗机/微波炉）商品信息提供公告
     * 가정용 전기제품(냉장고/세탁기/식기세척기/전자레인지) 상품정보제공고시
     */
    private HomeAppliances homeAppliances;
    /**
     * 季节性家电（空调/暖风机）商品信息提供公告
     * 계절가전(에어컨/온풍기) 상품정보제공고시
     */
    private SeasonAppliances seasonAppliances;
    /**
     * 办公用机器（电脑/笔记本电脑/打印机）商品信息提供告示
     * 사무용기기(컴퓨터/노트북/프린터) 상품정보제공고시
     */
    private OfficeAppliances officeAppliances;
    /**
     * 光学仪器（数码相机/摄像机）商品信息提供告示
     * 광학기기(디지털카메라/캠코더) 상품정보제공고시
     */
    private OpticsAppliances opticsAppliances;
    /**
     * 小型电子（MP3/电子词典等）商品信息提供公告
     * 소형전자(MP3/전자사전 등) 상품정보제공고시
     */
    private MicroElectronics microElectronics;
    /**
     * 导航商品信息提供公告
     * 내비게이션 상품정보제공고시
     */
    private Navigation navigation;
    /**
     * 汽车用品（汽车配件/其他汽车用品）商品信息提供告示
     * 자동차용품(자동차부품/기타 자동차용품) 상품정보제공고시
     */
    private CarArticles carArticles;
    /**
     * 医疗器械商品信息提供公告
     * 의료기기 상품정보제공고시
     */
    private MedicalAppliances medicalAppliances;
    /**
     * 厨房用品商品信息提供公告
     * 주방용품 상품정보제공고시
     */
    private KitchenUtensils kitchenUtensils;
    /**
     * 化妆品商品信息提供公告
     * 화장품 상품정보제공고시
     */
    private Cosmetic cosmetic;
    /**
     * 贵金属/宝石/手表类商品信息提供告示
     * 귀금속/보석/시계류 상품정보제공고시
     */
    private Jewellery jewellery;
    /**
     * 食品（农畜水产品）商品信息提供告示
     * 식품(농.축.수산물) 상품정보제공고시
     */
    private Food food;
    /**
     * 加工食品商品信息提供公告
     * 가공식품 상품정보제공고시
     */
    private GeneralFood generalFood;
    /**
     * 健康功能食品商品信息提供公告
     * 건강기능식품 상품정보제공고시
     */
    private DietFood dietFood;
    /**
     * 婴幼儿用品商品信息提供公告
     * 영유아용품 상품정보제공고시
     */
    private Kids kids;
    /**
     * 乐器商品信息提供公告
     * 악기 상품정보제공고시
     */
    private MusicalInstrument musicalInstrument;
    /**
     * 体育用品商品信息提供公告
     * 스포츠용품 상품정보제공고시
     */
    private SportsEquipment sportsEquipment;
    /**
     * 书籍商品信息提供告示
     * 서적 상품정보제공고시
     */
    private Books books;
    /**
     * 物品租赁服务（书籍、幼儿用品、活动用品等）商品信息提供告示
     * 물품대여 서비스(서적, 유아용품, 행사용품 등) 상품정보제공고시
     */
    private RentalEtc rentalEtc;
    /**
     * 物品租赁服务（净水器、马桶、空气净化器等）商品信息提供公告
     * 물품대여 서비스(정수기, 비데, 공기청정기 등) 상품정보제공고시
     */
    private RentalHa rentalHa;
    /**
     * 数码内容（音源、游戏、网络讲座等）商品信息提供告示
     * 디지털 콘텐츠(음원, 게임, 인터넷강의 등) 상품정보제공고시
     */
    private DigitalContents digitalContents;
    /**
     * 商品券/优惠券商品信息提供告示
     * 상품권/쿠폰 상품정보제공고시
     */
    private GiftCard giftCard;
    /**
     * 手机优惠券商品信息提供公告
     * 모바일 쿠폰 상품정보제공고시
     */
    private MobileCoupon mobileCoupon;
    /**
     * 电影/演出商品信息提供告示
     * 영화/공연 상품정보제공고시
     */
    private MovieShow movieShow;
    /**
     * 其他劳务商品信息提供公告
     * 기타 용역 상품정보제공고시
     */
    private EtcService etcService;
    /**
     * 生活化学品商品信息提供公告
     * 생활화학제품 상품정보제공고시
     */
    private Biochemistry biochemistry;
    /**
     * 杀生物制品商品信息提供公告
     * 살생물제품 상품정보제공고시
     */
    private Biocidal biocidal;
    /**
     * 手机商品信息提供公告
     * 휴대폰 상품정보제공고시
     */
    private CellPhone cellPhone;
    /**
     * 其他商品信息提供公告
     * 기타 재화 상품정보제공고시
     */
    private Etc etc;

    /**
     * 服装商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class Wear extends BaseAfterSale1 {
        /**
         * （产品材质） <= 1500 characters
         * 纤维的组成或混用率以百分比表示，功能性时，成绩书或许可证
         * string (제품 소재) <= 1500 characters
         * 섬유의 조성 또는 혼용율을 백분율로 표시, 기능성인 경우 성적서 또는 허가서
         */
        @NotEmpty(message = "产品材质不能为空")
        @Size(max = 1500, message = "产品材质不能超过1500个字符")
        private String material;
        /**
         * (颜色) <= 200 characters
         * string (색상) <= 200 characters
         */
        @NotEmpty(message = "颜色不能为空")
        @Size(max = 200, message = "颜色不能超过200个字符")
        private String color;
        /**
         * (尺寸) <= 200 characters
         * string (치수) <= 200 characters
         */
        @NotEmpty(message = "尺寸不能为空")
        @Size(max = 200, message = "尺寸不能超过200个字符")
        private String size;
        /**
         * （制造商）<=200 characters
         * string (제조자(사)) <= 200 characters
         */
        @NotEmpty(message = "制造商不能为空")
        @Size(max = 200, message = "制造商不能超过200个字符")
        private String manufacturer;
        /**
         * （洗涤方法及使用注意事项） <= 1500 characters
         * string (세탁 방법 및 취급 시 주의사항) <= 1500 characters
         */
        @NotEmpty(message = "洗涤方法及使用注意事项不能为空")
        @Size(max = 1500, message = "洗涤方法及使用注意事项不能超过1500个字符")
        private String caution;
        /**
         * <输入" yyy-MM" 格式> (生产日期) <= 300 characters
         * string <'yyyy-MM' 형식 입력> (제조연월) <= 300 characters
         */
        @Size(max = 300, message = "生产日期不能超过300个字符")
        private String packDate;
        /**
         * <未输入packDate时必需> (直接输入生产年月) <= 300 characters
         * string <packDate를 입력하지 않은 경우에는 필수> (제조연월 직접 입력) <= 300 characters
         */
        @Size(max = 300, message = "直接输入生产年月不能超过300个字符")
        private String packDateText;
    }

    /**
     * 皮鞋/鞋类商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class Shoes extends BaseAfterSale1 {
        /**
         * （产品的主要材质） <= 1500 characters
         * 运动鞋时区分面料、内衬进行标记
         * string (제품의 주 소재) <= 1500 characters
         * 운동화인 경우에는 겉감, 안감을 구분하여 표시
         */
        @NotEmpty(message = "产品的主要材质不能为空")
        @Size(max = 1500, message = "产品的主要材质不能超过1500个字符")
        private String material;
        /**
         * (颜色) <= 200 characters
         * string (색상) <= 200 characters
         */
        @NotEmpty(message = "颜色不能为空")
        @Size(max = 200, message = "颜色不能超过200个字符")
        private String color;
        /**
         * (脚步) <= 200 characters
         * 标记海外尺寸时同时标记国内尺寸（单位:mm）
         * string (발길이) <= 200 characters
         * 해외사이즈 표기 시 국내사이즈 병행 표기(단위: mm)
         */
        @NotEmpty(message = "脚步不能为空")
        @Size(max = 200, message = "脚步不能超过200个字符")
        private String size;
        /**
         * < 如果没有此选项， 则删除此元素并传送 。 > (鞋跟高度) <= 200 characters
         * 仅限于使用鞋跟材料的女性鞋（单位:cm）
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (굽높이) <= 200 characters
         * 굽 재료를 사용하는 여성화에 한함(단위: cm)
         */
        @Size(max = 200, message = "鞋跟高度不能超过200个字符")
        private String height;
        /**
         * （制造商）<=200 characters
         * string (제조자(사)) <= 200 characters
         */
        @NotEmpty(message = "制造商不能为空")
        @Size(max = 200, message = "制造商不能超过200个字符")
        private String manufacturer;
        /**
         * （使用时注意事项） <= 1500 characters
         * string (취급 시 주의사항) <= 1500 characters
         */
        @NotEmpty(message = "使用时注意事项不能为空")
        @Size(max = 1500, message = "使用时注意事项不能超过1500个字符")
        private String caution;
    }

    /**
     * 包包商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class Bag extends BaseAfterSale1 {
        /**
         * (类型) <= 200 characters
         * string (종류) <= 200 characters
         */
        @NotEmpty(message = "类型不能为空")
        @Size(max = 200, message = "类型长度不能超过200个字符")
        private String type;
        /**
         * （材质）<=1500 characters
         * string (소재) <= 1500 characters
         */
        @NotEmpty(message = "材质不能为空")
        @Size(max = 1500, message = "材质长度不能超过1500个字符")
        private String material;
        /**
         * (颜色) <= 200 characters
         * string (색상) <= 200 characters
         */
        @NotEmpty(message = "颜色不能为空")
        @Size(max = 200, message = "颜色长度不能超过200个字符")
        private String color;
        /**
         * (大小) <= 200 characters
         * string (크기) <= 200 characters
         */
        @NotEmpty(message = "大小不能为空")
        @Size(max = 200, message = "大小长度不能超过200个字符")
        private String size;
        /**
         * (制造商) <= 200 characters
         * string (제조자) <= 200 characters
         */
        @NotEmpty(message = "制造商不能为空")
        @Size(max = 200, message = "制造商长度不能超过200个字符")
        private String manufacturer;
        /**
         * （使用时注意事项） <= 1500 characters
         * string (취급 시 주의사항) <= 1500 characters
         */
        @NotEmpty(message = "使用时注意事项不能为空")
        @Size(max = 1500, message = "使用时注意事项长度不能超过1500个字符")
        private String caution;
    }

    /**
     * 时尚杂货（帽子/腰带/饰品）商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class FashionItems extends BaseAfterSale1 {
        /**
         * (类型) <= 200 characters
         * string (종류) <= 200 characters
         */
        @NotEmpty(message = "类型不能为空")
        @Size(max = 200, message = "类型不能超过200个字符")
        private String type;
        /**
         * （材质）<=1500 characters
         * string (소재) <= 1500 characters
         */
        @NotEmpty(message = "材质不能为空")
        @Size(max = 1500, message = "材质不能超过1500个字符")
        private String material;
        /**
         * (尺寸) <= 200 characters
         * string (치수) <= 200 characters
         */
        @NotEmpty(message = "尺寸不能为空")
        @Size(max = 200, message = "尺寸不能超过200个字符")
        private String size;
        /**
         * （制造商）<=200 characters
         * string (제조자(사)) <= 200 characters
         */
        @NotEmpty(message = "制造商不能为空")
        @Size(max = 200, message = "制造商不能超过200个字符")
        private String manufacturer;
        /**
         * （使用时注意事项） <= 1500 characters
         * string (취급 시 주의사항) <= 1500 characters
         */
        @NotEmpty(message = "使用时注意事项不能为空")
        @Size(max = 1500, message = "使用时注意事项不能超过1500个字符")
        private String caution;
    }

    /**
     * 床上用品/窗帘商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class SleepingGear extends BaseAfterSale1 {
        /**
         * （产品材质） <= 1500 characters
         * 纤维的组成或混用率以百分比表示，使用填充物的产品同时标明填充物。
         * string (제품 소재) <= 1500 characters
         * 섬유의 조성 또는 혼용율을 백분율로 표시, 충전재를 사용한 제품은 충전재를 함께 표기
         */
        @NotEmpty(message = "产品材质不能为空")
        @Size(max = 1500, message = "产品材质不能超过1500个字符")
        private String material;
        /**
         * (颜色) <= 200 characters
         * string (색상) <= 200 characters
         */
        @NotEmpty(message = "颜色不能为空")
        @Size(max = 200, message = "颜色不能超过200个字符")
        private String color;
        /**
         * (尺寸) <= 200 characters
         * string (치수) <= 200 characters
         */
        @NotEmpty(message = "尺寸不能为空")
        @Size(max = 200, message = "尺寸不能超过200个字符")
        private String size;
        /**
         * （产品构成） <= 1000 characters
         * string (제품 구성) <= 1000 characters
         */
        @NotEmpty(message = "产品构成不能为空")
        @Size(max = 1000, message = "产品构成不能超过1000个字符")
        private String components;
        /**
         * （制造商）<=200 characters
         * string (제조자(사)) <= 200 characters
         */
        @NotEmpty(message = "制造商不能为空")
        @Size(max = 200, message = "制造商不能超过200个字符")
        private String manufacturer;
        /**
         * （洗涤方法及使用注意事项） <= 1500 characters
         * string (세탁 방법 및 취급 시 주의사항) <= 1500 characters
         */
        @NotEmpty(message = "洗涤方法及使用注意事项不能为空")
        @Size(max = 1500, message = "洗涤方法及使用注意事项不能超过1500个字符")
        private String caution;
    }

    /**
     * 家具（床/沙发/水槽/DIY产品）商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class Furniture extends BaseAfterSale1 {
        /**
         * (品名) <= 50 characters
         * string (품명) <= 50 characters
         */
        @NotEmpty(message = "品名不能为空")
        @Size(max = 50, message = "品名不能超过50个字符")
        private String itemName;
        /**
         * (KC 认证信息) < = 200 characters
         * ｢仅限于电器用品及生活用品安全管理法｣规定的供应商适合性确认对象产品
         * string (KC 인증정보) <= 200 characters
         * ｢전기용품 및 생활용품 안전관리법｣에 따른 공급자적합성확인대상제품에 한함
         */
        @NotEmpty(message = "KC 认证信息不能为空")
        @Size(max = 200, message = "KC 认证信息不能超过200个字符")
        private String certificationType;
        /**
         * (颜色) <= 200 characters
         * string (색상) <= 200 characters
         */
        @NotEmpty(message = "颜色不能为空")
        @Size(max = 200, message = "颜色不能超过200个字符")
        private String color;
        /**
         * （组件） <= 500 characters
         * string (구성품) <= 500 characters
         */
        @NotEmpty(message = "组件不能为空")
        @Size(max = 500, message = "组件不能超过500个字符")
        private String components;
        /**
         * （主要材质）<=500 characters
         * string (주요 소재) <= 500 characters
         */
        @NotEmpty(message = "主要材质不能为空")
        @Size(max = 500, message = "主要材质不能超过500个字符")
        private String material;
        /**
         * （制造商）<=200 characters
         * 各构成品的制造者（公司）不同时，各构成品的制造者（公司）
         * string (제조자(사)) <= 200 characters
         * 구성품별 제조자(사)가 다른 경우 각 구성품의 제조자(사)
         */
        @NotEmpty(message = "制造商不能为空")
        @Size(max = 200, message = "制造商不能超过200个字符")
        private String manufacturer;
        /**
         * <如无此选项， 则删除此元素并发送 。 > (进口商) <= 200 characters
         * 进口商品同时标明进口者。 各部件制造者不同时，各部件的进口者
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (수입자) <= 200 characters
         * 수입품의 경우 수입자를 함께 표시. 구성품별 제조자가 다른 경우 각 구성품의 수입자
         */
        @Size(max = 200, message = "进口商不能超过200个字符")
        private String importer;
        /**
         * （制造国） <= 200 characters
         * 各部件的制造国不同时，各部件的制造国
         * string (제조국) <= 200 characters
         * 구성품별 제조국이 다른 경우 각 구성품의 제조국
         */
        @NotEmpty(message = "制造国不能为空")
        @Size(max = 200, message = "制造国不能超过200个字符")
        private String producer;
        /**
         * (大小) <= 200 characters
         * string (크기) <= 200 characters
         */
        @NotEmpty(message = "大小不能为空")
        @Size(max = 200, message = "大小不能超过200个字符")
        private String size;
        /**
         * （配送安装费用） <= 200 characters
         * string (배송 설치 비용) <= 200 characters
         */
        @NotEmpty(message = "配送安装费用不能为空")
        @Size(max = 200, message = "配送安装费用不能超过200个字符")
        private String installedCharge;
        /**
         * <如无此事项，请删除此元素并传送。> (再供应理由及瑕疵) <= 200 characters
         * 再供应(翻新)家具的情况,再供应事由及瑕疵部位标示(例如,作为展示商品,餐桌等有细微瑕疵)。
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (재공급 사유 및 하자) <= 200 characters
         * 재공급(리퍼브) 가구의 경우 재공급 사유 및 하자 부위 표시(예: 전시 상품으로 식탁 상판 등에 미세한 흠집 있음)
         */
        @Size(max = 200, message = "再供应理由及瑕疵不能超过200个字符")
        private String refurb;
    }

    /**
     * 影像家电（TV类）商品信息提供告示
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class ImageAppliances extends ImageHomeAppliances {
        /**
         * (大小、 形态) < = 200 characters
         * string (크기, 형태) <= 200 characters
         */
        @NotEmpty(message = "大小、 形态不能为空")
        @Size(max = 200, message = "大小、 形态不能超过200个字符")
        private String size;
        /**
         * （屏幕规格） <= 200 characters
         * 屏幕大小、 分辨率、 屏幕比例等
         * string (화면 사양) <= 200 characters
         * 화면 크기, 해상도, 화면 비율 등
         */
        @NotEmpty(message = "屏幕规格不能为空")
        @Size(max = 200, message = "屏幕规格不能超过200个字符")
        private String displaySpecification;
    }

    /**
     * 家用电器（冰箱/洗衣机/洗碗机/微波炉）商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class HomeAppliances extends ImageHomeAppliances {
        /**
         * ( 大小、 容量、 形态) <= 200 characters
         * string (크기, 용량, 형태) <= 200 characters
         */
        @NotEmpty(message = "大小、 容量、 形态不能为空")
        @Size(max = 200, message = "大小、 容量、 形态不能超过200个字符")
        private String size;
    }

    /**
     * 季节性家电（空调/暖风机）商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class SeasonAppliances extends SeasonOfficeAppliances {
        /**
         * (大小、 形态) < = 200 characters
         * 包括室外机
         * string (크기, 형태) <= 200 characters
         * 실외기 포함
         */
        @NotEmpty(message = "大小、 形态不能为空")
        @Size(max = 200, message = "大小、 形态不能超过200个字符")
        private String size;
        /**
         * （冷暖气面积） <= 200 characters
         * string (냉난방 면적) <= 200 characters
         */
        @NotEmpty(message = "冷暖气面积不能为空")
        @Size(max = 200, message = "冷暖气面积不能超过200个字符")
        private String area;
        /**
         * （追加安装费用） <= 500 characters
         * string (추가 설치 비용) <= 500 characters
         */
        @NotEmpty(message = "追加安装费用不能为空")
        @Size(max = 500, message = "追加安装费用不能超过500个字符")
        private String installedCharge;
    }

    /**
     * 办公用机器（电脑/笔记本电脑/打印机）商品信息提供告示
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class OfficeAppliances extends SeasonOfficeAppliances {
        /**
         * (大小) <= 200 characters
         * string (크기) <= 200 characters
         */
        @NotEmpty(message = "大小不能为空")
        @Size(max = 200, message = "大小不能超过200个字符")
        private String size;
        /**
         * < 如果没有此选项， 则删除此元素并发送 。 > (重量) <= 200 characters
         * 重量仅限笔记本电脑等便携式设备
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (무게) <= 200 characters
         * 무게는 노트북 등 휴대형 기기에 한함
         */
        @Size(max = 200, message = "重量不能超过200个字符")
        private String weight;
        /**
         * (主要规格) <= 1500 characters
         * 电脑和笔记本电脑的性能、容量、是否包含操作系统等。 打印机的打印速度等。
         * string (주요 사양) <= 1500 characters
         * 컴퓨터와 노트북의 경우 성능, 용량, 운영체제 포함 여부 등. 프린터의 경우 인쇄 속도 등.
         */
        @NotEmpty(message = "主要规格不能为空")
        @Size(max = 1500, message = "主要规格不能超过1500个字符")
        private String specification;
    }

    /**
     * 光学仪器（数码相机/摄像机）商品信息提供告示
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class OpticsAppliances extends BaseAppliance1 {
        /**
         * (大小) <= 200 characters
         * string (크기) <= 200 characters
         */
        @NotEmpty(message = "大小不能为空")
        @Size(max = 200, message = "大小不能超过200个字符")
        private String size;
        /**
         * (重量) <= 200 characters
         * string (무게) <= 200 characters
         */
        @NotEmpty(message = "重量不能为空")
        @Size(max = 200, message = "重量不能超过200个字符")
        private String weight;
        /**
         * (主要规格) <= 1500 characters
         * 电脑和笔记本电脑的性能、容量、是否包含操作系统等。 打印机的打印速度等。
         * string (주요 사양) <= 1500 characters
         * 컴퓨터와 노트북의 경우 성능, 용량, 운영체제 포함 여부 등. 프린터의 경우 인쇄 속도 등.
         */
        @NotEmpty(message = "主要规格不能为空")
        @Size(max = 1500, message = "主要规格不能超过1500个字符")
        private String specification;
    }

    /**
     * 小型电子（MP3/电子词典等）商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class MicroElectronics extends MicroNavigationAppliances {
        /**
         * <输入" yyy-MM" 格式> (发布日期) <= 300 characters
         * string <'yyyy-MM' 형식 입력> (출시연월) <= 300 characters
         */
        @Size(max = 300, message = "发布日期不能超过300个字符")
        private String releaseDate;
    }

    /**
     * 导航商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class Navigation extends MicroNavigationAppliances {
        /**
         * string <输入" yyy-MM" 格式> (同一型号发布日期) <= 300 characters
         * string <'yyyy-MM' 형식 입력> (동일 모델의 출시연월) <= 300 characters
         */
        @Size(max = 300, message = "同一型号发布日期不能超过300个字符")
        private String releaseDate;
        /**
         * (地图更新费用) <= 200 characters
         * string (맵 업데이트 비용) <= 200 characters
         */
        @NotEmpty(message = "地图更新费用不能为空")
        @Size(max = 200, message = "地图更新费用不能超过200个字符")
        private String updateCost;
        /**
         * (免费期间) <= 200 characters
         * string (무상 기간) <= 200 characters
         */
        @NotEmpty(message = "免费期间不能为空")
        @Size(max = 200, message = "免费期间不能超过200个字符")
        private String freeCostPeriod;
    }

    /**
     * 汽车用品（汽车配件/其他汽车用品）商品信息提供告示
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class CarArticles extends BaseProduct {
        /**
         * <输入" yyy-MM" 格式> (同一型号发布日期) <= 300 characters
         * string <'yyyy-MM' 형식 입력> (동일 모델 출시연월) <= 300 characters
         */
        @Size(max = 300, message = "同一型号发布日期不能超过300个字符")
        private String releaseDate;
        /**
         * (KC 认证信息) < = 200 characters
         * ｢仅限于根据《汽车管理法》 ｣ 配件自我认证对象 汽车配件 ｢ 电气用品及生活用品安全管理法 ｣ 提供的安全认证、安全确认、供应商合格性确认对象产品及根据《｢传播法》 ｣ 提供的合格认证、合格登记对象器材
         * string (KC 인증정보) <= 200 characters
         * ｢자동차관리법｣에 따른 부품자기인증 대상 자동차부품 ｢전기용품 및 생활용품 안전관리법｣에 따른 안전인증·안전확인·공급자적합성확인대상제품 및 ｢전파법｣에 따른 적합인증·적합등록 대상 기자재에 한함
         */
        @NotEmpty(message = "KC 认证信息不能为空")
        @Size(max = 200, message = "KC 认证信息不能超过200个字符")
        private String certificationType;
        /**
         * （产品使用风险与注意事项） <= 200 characters
         * 仅限节油装置
         * string (제품 사용으로 인한 위험 및 유의사항) <= 200 characters
         * 연료절감장치에 한함
         */
        @NotEmpty(message = "产品使用风险与注意事项不能为空")
        @Size(max = 200, message = "产品使用风险与注意事项不能超过200个字符")
        private String caution;
        /**
         * (大小) <= 200 characters
         * string (크기) <= 200 characters
         */
        @NotEmpty(message = "大小不能为空")
        @Size(max = 200, message = "大小不能超过200个字符")
        private String size;
        /**
         * （适用车型）<= 1000 characters
         * string (적용 차종) <= 1000 characters
         */
        @NotEmpty(message = "适用车型不能为空")
        @Size(max = 1000, message = "适用车型不能超过1000个字符")
        private String applyModel;
        /**
         * （检验合格证编号）<=50 characters
         * ｢大气环境保护法 ｣ 仅限添加剂、催化剂
         * string (검사합격증 번호) <= 50 characters
         * ｢대기환경보전법｣에 따른 첨가제·촉매제에 한함
         */
        @NotEmpty(message = "检验合格证编号不能为空")
        @Size(max = 50, message = "检验合格证编号不能超过50个字符")
        private String roadWorthyCertification;
    }

    /**
     * 医疗器械商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class MedicalAppliances extends BaseVoltagePowerConsumption {
        /**
         * <如无此事项，请删除此要素并发送。> (许可、认证、申报编号) <= 30 characters
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (허가·인증·신고번호) <= 30 characters
         * ｢의료기기법｣에 따른 허가·인증·신고 대상 의료기기에 한함
         */
        @Size(max = 30, message = "许可、认证、申报编号不能超过30个字符")
        private String licenceNo;
        /**
         * （广告事前审议是否必要）<=200 characters
         * string (광고사전심의 필 유무) <= 200 characters
         */
        @NotEmpty(message = "广告事前审议是否必要不能为空")
        @Size(max = 200, message = "广告事前审议是否必要不能超过200个字符")
        private String advertisingCertificationType;
        /**
         * <输入" yyy-MM" 格式> (发布日期) <= 300 characters
         * string <'yyyy-MM' 형식 입력> (출시연월) <= 300 characters
         */
        @Size(max = 300, message = "发布日期不能超过300个字符")
        private String releaseDate;
        /**
         * （产品使用目的） <= 500 characters
         * string (제품의 사용 목적) <= 500 characters
         */
        @NotEmpty(message = "产品使用目的不能为空")
        @Size(max = 500, message = "产品使用目的不能超过500个字符")
        private String purpose;
        /**
         * (用法) <= 500 characters
         * string (사용 방법) <= 500 characters
         */
        @NotEmpty(message = "用法不能为空")
        @Size(max = 500, message = "用法不能超过500个字符")
        private String usage;
        /**
         * （使用时注意事项） <= 1500 characters
         * string (취급 시 주의사항) <= 1500 characters
         */
        @NotEmpty(message = "使用时注意事项不能为空")
        private String caution;
    }

    /**
     * 厨房用品商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class KitchenUtensils extends BaseProduct {
        /**
         * (材质) <= 200 characters
         * string (재질) <= 200 characters
         */
        @NotEmpty(message = "材质不能为空")
        @Size(max = 200, message = "材质不能超过200个字符")
        private String material;
        /**
         * （组件） <= 500 characters
         * string (구성품) <= 500 characters
         */
        @NotEmpty(message = "组件不能为空")
        @Size(max = 500, message = "组件不能超过500个字符")
        private String component;
        /**
         * (大小) <= 200 characters
         * string (크기) <= 200 characters
         */
        @NotEmpty(message = "大小不能为空")
        @Size(max = 200, message = "大小不能超过200个字符")
        private String size;
        /**
         * <输入" yyy-MM" 格式> (发布日期) <= 300 characters
         * string <'yyyy-MM' 형식 입력> (출시연월) <= 300 characters
         */
        @Size(max = 300, message = "发布日期不能超过300个字符")
        private String releaseDate;
        /**
         * （制造国） <= 200 characters
         * string (제조국) <= 200 characters
         */
        @NotEmpty(message = "制造国不能为空")
        @Size(max = 200, message = "制造国不能超过200个字符")
        private String producer;
        /**
         * <未输入时设定为false。 true:根据进口食品安全管理特别法,必须申报进口。 false:无相关事项> （根据进口食品安全管理特别法申报进口）
         * ｢根据进口食品安全管理特别法｣的进口器具或容器、包装时
         * boolean <미입력 시 false로 설정됩니다. true: 수입식품안전관리특별법에 따른 수입신고를 필함. false: 해당 사항 없음> (수입식품안전관리특별법에 따른 수입신고)
         * ｢수입식품안전관리 특별법｣에 따른 수입기구 또는 용기·포장의 경우
         */
        private Boolean importDeclaration;
    }

    /**
     * 化妆品商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class Cosmetic extends BaseAfterSale2 {
        /**
         * （内容物的容量与重量） <= 200 characters
         * string (내용물의 용량 및 중량) <= 200 characters
         */
        @NotEmpty(message = "内容物的容量与重量不能为空")
        @Size(max = 200, message = "内容物的容量与重量不能超过200个字符")
        private String capacity;
        /**
         * （产品主要规格） <= 1500 characters
         * 皮肤类型、颜色（编号、编号）等
         * string (제품 주요 사양) <= 1500 characters
         * 피부 타입, 색상(호, 번) 등
         */
        @NotEmpty(message = "产品主要规格不能为空")
        @Size(max = 1500, message = "产品主要规格不能超过1500个字符")
        private String specification;
        /**
         * <输入'yyy-MM'格式> (有效期或开封后使用期限) <= 300 characters
         * string <'yyyy-MM' 형식 입력> (사용기한 또는 개봉 후 사용기간) <= 300 characters
         */
        @Size(max = 300, message = "有效期或开封后使用期限不能超过300个字符")
        private String expirationDate;
        /**
         * <未输入expiration Date时必需> （使用期限或开封后直接输入使用期限） <= 300 characters
         * string <expirationDate를 입력하지 않은 경우에는 필수> (사용기한 또는 개봉 후 사용기간 직접 입력) <= 300 characters
         */
        @Size(max = 300, message = "使用期限或开封后直接输入使用期限不能超过300个字符")
        private String expirationDateText;
        /**
         * (用法) <= 1500 characters
         * string (사용 방법) <= 1500 characters
         */
        @NotEmpty(message = "用法不能为空")
        @Size(max = 1500, message = "用法不能超过1500个字符")
        private String usage;
        /**
         * （化妆品制造商）<= 200 characters
         * string (화장품 제조업자) <= 200 characters
         */
        @NotEmpty(message = "化妆品制造商不能为空")
        @Size(max = 200, message = "化妆品制造商不能超过200个字符")
        private String manufacturer;
        /**
         * （制造国） <= 200 characters
         * string (제조국) <= 200 characters
         */
        @NotEmpty(message = "制造国不能为空")
        @Size(max = 200, message = "制造国不能超过200个字符")
        private String producer;
        /**
         * （化妆品责任销售商） <= 200 characters
         * string (화장품책임판매업자) <= 200 characters
         */
        @NotEmpty(message = "化妆品责任销售商不能为空")
        @Size(max = 200, message = "化妆品责任销售商不能超过200个字符")
        private String distributor;
        /**
         * <如无此事项，请删除此要素并发送。>(定制型化妆品销售商)<= 200 characters
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (맞춤형 화장품판매업자) <= 200 characters
         */
        @Size(max = 200, message = "定制型化妆品销售商不能超过200个字符")
        private String customizedDistributor;
        /**
         * （｢根据化妆品法｣需记载、标注的所有成分） <= 1500 characters
         * string (｢화장품법｣에 따라 기재ㆍ표시하여야 하는 모든 성분) <= 1500 characters
         */
        @NotEmpty(message = "｢根据化妆品法｣需记载、标注的所有成分不能为空")
        @Size(max = 1500, message = "｢根据化妆品法｣需记载、标注的所有成分不能超过1500个字符")
        private String mainIngredient;
        /**
         * （｢根据化妆品法｣的功能性化妆品（美白、改善皱纹、防晒产品等） <= 200 characters
         * 根据化妆品法，功能性化妆品审查（或报告）完毕
         * string (｢화장품법｣에 따른 기능성 화장품(미백, 주름개선, 자외선 차단제품 등)의 경우) <= 200 characters
         * 화장품법에 따른 기능성 화장품 심사(또는 보고)를 필함
         */
        @NotEmpty(message = "｢根据化妆品法｣的功能性化妆品（美白、改善皱纹、防晒产品等）不能为空")
        @Size(max = 200, message = "｢根据化妆品法｣的功能性化妆品（美白、改善皱纹、防晒产品等）不能超过200个字符")
        private String certificationType;
        /**
         * (使用时的注意事项) < = 1500 characters
         * string (사용할 때의 주의사항) <= 1500 characters
         */
        @NotEmpty(message = "使用时的注意事项不能为空")
        @Size(max = 1500, message = "使用时的注意事项不能超过1500个字符")
        private String caution;
    }

    /**
     * 贵金属/宝石/手表类商品信息提供告示
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class Jewellery extends BaseAfterSale1 {
        /**
         * （材质）<=200 characters
         * string (소재) <= 200 characters
         */
        @NotEmpty(message = "材质不能为空")
        @Size(max = 200, message = "材质不能超过200个字符")
        private String material;
        /**
         * (纯度) <= 200 characters
         * string (순도) <= 200 characters
         */
        @NotEmpty(message = "纯度不能为空")
        @Size(max = 200, message = "纯度不能超过200个字符")
        private String purity;
        /**
         * < 如果没有此选项， 则删除此元素并发送 。 > (带材) <= 200 characters
         * 手表的话
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (밴드 재질) <= 200 characters
         * 시계의 경우
         */
        @Size(max = 200, message = "带材不能超过200个字符")
        private String bandMaterial;
        /**
         * (重量) <= 200 characters
         * string (중량) <= 200 characters
         */
        @NotEmpty(message = "重量不能为空")
        @Size(max = 200, message = "重量不能超过200个字符")
        private String weight;
        /**
         * （制造商）<=200 characters
         * string (제조자(사)) <= 200 characters
         */
        @NotEmpty(message = "制造商不能为空")
        @Size(max = 200, message = "制造商不能超过200个字符")
        private String manufacturer;
        /**
         * <如无相关事项，则删除该要素并发送。>（制造国（原产地、加工地等不同时） <= 200 characters
         * 原产地，加工地等不同地时候一起标记
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (제조국(원산지, 가공지 등이 다를 경우)) <= 200 characters
         * 원산지, 가공지 등이 다를 경우 함께 표기
         */
        @Size(max = 200, message = "制造国（原产地、加工地等不同时）不能超过200个字符")
        private String producer;
        /**
         * (尺寸) <= 200 characters
         * string (치수) <= 200 characters
         */
        @NotEmpty(message = "尺寸不能为空")
        @Size(max = 200, message = "尺寸不能超过200个字符")
        private String size;
        /**
         * （佩戴时注意事项） <= 1500 characters
         * string (착용 시 주의사항) <= 1500 characters
         */
        @NotEmpty(message = "佩戴时注意事项不能为空")
        @Size(max = 1500, message = "佩戴时注意事项不能超过1500个字符")
        private String caution;
        /**
         * (主要规格) <= 1500 characters
         * 贵金属、宝石类的等级、手表类的功能、防水等。
         * string (주요 사양) <= 1500 characters
         * 귀금속, 보석류의 경우 등급, 시계의 경우 기능, 방수 등
         */
        @NotEmpty(message = "主要规格不能为空")
        @Size(max = 1500, message = "主要规格不能超过1500个字符")
        private String specification;
        /**
         * （是否提供保证书） <= 200 characters
         * string (보증서 제공 여부) <= 200 characters
         */
        @NotEmpty(message = "是否提供保证书不能为空")
        @Size(max = 200, message = "是否提供保证书不能超过200个字符")
        private String provideWarranty;
    }

    /**
     * 食品（农畜水产品）商品信息提供告示
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class Food extends BaseDispute {
        /**
         * （品目或名称） <= 200 characters
         * string (품목 또는 명칭) <= 200 characters
         */
        @NotEmpty(message = "品目或名称不能为空")
        @Size(max = 200, message = "品目或名称不能超过200个字符")
        private String foodItem;
        /**
         * （各包装单位的容量（重量）、数量、大小） <= 50 characters
         * string (포장 단위별 용량(중량), 수량, 크기) <= 50 characters
         */
        @NotEmpty(message = "各包装单位的容量（重量）、数量、大小不能为空")
        @Size(max = 50, message = "各包装单位的容量（重量）、数量、大小不能超过50个字符")
        private String weight;
        /**
         * （各包装单位数量） <= 200 characters
         * string (포장 단위별 수량) <= 200 characters
         */
        @NotEmpty(message = "各包装单位数量不能为空")
        @Size(max = 200, message = "各包装单位数量不能超过200个字符")
        private String amount;
        /**
         * （各包装单位大小） <= 200 characters
         * string (포장 단위별 크기) <= 200 characters
         */
        @NotEmpty(message = "各包装单位大小不能为空")
        @Size(max = 200, message = "各包装单位大小不能超过200个字符")
        private String size;
        /**
         * （制造年月日） <= 300 characters
         * string <date> (제조연월일) <= 300 characters
         */
        @Size(max = 300, message = "制造年月日不能超过300个字符")
        private String packDate;
        /**
         * <未输入packDate时必需> （直接输入制造年月日） <= 300 characters
         * string <packDate를 입력하지 않은 경우에는 필수> (제조연월일 직접 입력) <= 300 characters
         */
        @Size(max = 300, message = "直接输入制造年月日不能超过300个字符")
        private String packDateText;
//        /**
//         * （保质期） <= 300 characters 【Deprecated】
//         * string <date> (유통기한) <= 300 characters 【Deprecated】
//         */
//        private String expirationDate;
//        /**
//         * <未输入expirationDate时必需> （直接输入保质期） <= 300 characters 【Deprecated】
//         * string <expirationDate를 입력하지 않은 경우에는 필수> (유통기한 직접 입력) <= 300 characters 【Deprecated】
//         */
//        private String expirationDateText;
        /**
         * （消费期限或品质维持期限） <= 300 characters
         * string <date> (소비기한 또는 품질유지기한) <= 300 characters
         */
        @Size(max = 300, message = "消费期限或品质维持期限不能超过300个字符")
        private String consumptionDate;
        /**
         * <未输入consumption Date时必需> (直接输入消费期限或品质维持期限) <= 300 characters
         * string <consumptionDate를 입력하지 않은 경우에는 필수> (소비기한 또는 품질유지기한 직접 입력) <= 300 characters
         */
        @Size(max = 300, message = "直接输入消费期限或品质维持期限不能超过300个字符")
        private String consumptionDateText;
        /**
         * (生产者) <= 200 characters
         * string (생산자) <= 200 characters
         */
        @NotEmpty(message = "生产者不能为空")
        @Size(max = 200, message = "生产者不能超过200个字符")
        private String producer;
        /**
         * <如无相应事项，请删除该要素并发送。> (详细品目群显示事项) <= 200 characters
         * 农产品
         * ｢农水产品质量管理法｣规定的转基因农水产品标识、地理标志畜产品
         * 根据《畜产法》的等级标示等级(1++韩国产牛肉的情况, ｢ 根据牛、猪肉的标示方法及部位区分标准｣, 包括肌内脂肪度信息在内进行标示), ｢ 家畜及畜产品履历管理相关法律 ｣ 有无履历管理对象畜产品, 进口农水畜产品
         * 根据《进口食品安全管理特别法》必须申报进口
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (세부 품목군별 표시사항) <= 200 characters
         * 농산물
         * <p>
         * ｢농수산물 품질관리법｣에 따른 유전자변형농수산물 표시, 지리적 표시 축산물
         * 축산법에 따른 등급 표시 등급(1++ 국내산 쇠고기의 경우 ｢소·돼지 식육의 표시방법 및 부위 구분기준｣에 따라 근내지방도 정보를 포함하여 표시), ｢가축 및 축산물 이력관리에 관한 법률｣에 따른 이력관리대상축산물 유무 수입 농수축산물
         * 수입식품안전관리특별법에 따른 수입신고를 필함
         */
        @Size(max = 200, message = "详细品目群显示事项不能超过200个字符")
        private String relevantLawContent;
        /**
         * （商品构成） <= 200 characters
         * string (상품 구성) <= 200 characters
         */
        @NotEmpty(message = "商品构成不能为空")
        @Size(max = 200, message = "商品构成不能超过200个字符")
        private String productComposition;
        /**
         * （保管方法或处理方法） <= 500 characters
         * string (보관 방법 또는 취급 방법) <= 500 characters
         */
        @NotEmpty(message = "保管方法或处理方法不能为空")
        @Size(max = 500, message = "保管方法或处理方法不能超过500个字符")
        private String keep;
        /**
         * （消费者安全注意事项） <= 500 characters
         * ｢指食品等标识、广告相关法律施行规则｣ 第5条及[附表2]规定的标识事项
         * string (소비자 안전을 위한 주의사항) <= 500 characters
         * ｢식품 등의 표시ㆍ광고에 관한 법률 시행규칙｣ 제5조 및 [별표 2]에 따른 표시사항을 말함
         */
        @NotEmpty(message = "消费者安全注意事项不能为空")
        @Size(max = 500, message = "消费者安全注意事项不能超过500个字符")
        private String adCaution;
        /**
         * （消费者咨询相关电话号码）<=30 characters
         * string (소비자 상담 관련 전화번호) <= 30 characters
         */
        @NotEmpty(message = "消费者咨询相关电话号码不能为空")
        @Size(max = 30, message = "消费者咨询相关电话号码不能超过30个字符")
        private String customerServicePhoneNumber;
    }

    /**
     * 加工食品商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class GeneralFood extends BaseDispute {
        /**
         * （产品名） <= 200 characters
         * string (제품명) <= 200 characters
         */
        @NotEmpty(message = "产品名不能为空")
        @Size(max = 200, message = "产品名不能超过200个字符")
        private String productName;
        /**
         * （食品的类型）<=200 characters
         * string (식품의 유형) <= 200 characters
         */
        @NotEmpty(message = "食品的类型不能为空")
        @Size(max = 200, message = "食品的类型不能超过200个字符")
        private String foodType;
        /**
         * (生产者) <= 200 characters
         * string (생산자) <= 200 characters
         */
        @NotEmpty(message = "生产者不能为空")
        @Size(max = 200, message = "生产者不能超过200个字符")
        private String producer;
        /**
         * (所在地) <= 200 characters
         * 进口货物，生产者、进口商和制造国
         * string (소재지) <= 200 characters
         * 수입품의 경우 생산자, 수입자 및 제조국
         */
        @NotEmpty(message = "所在地不能为空")
        @Size(max = 200, message = "所在地不能超过200个字符")
        private String location;
        /**
         * （制造年月日） <= 300 characters
         * string <date> (제조연월일) <= 300 characters
         */
        @Size(max = 300, message = "制造年月日不能超过300个字符")
        private String packDate;
        /**
         * <未输入packDate时必需> （直接输入制造年月日） <= 300 characters
         * string <packDate를 입력하지 않은 경우에는 필수> (제조연월일 직접 입력) <= 300 characters
         */
        @Size(max = 300, message = "直接输入制造年月日不能超过300个字符")
        private String packDateText;
//        /**
//         * string <date> (유통기한) <= 300 characters
//         * 【Deprecated】
//         */
//        private String expirationDate;
//        /**
//         * string <expirationDate를 입력하지 않은 경우에는 필수> (유통기한 직접 입력) <= 300 characters
//         * 【Deprecated】
//         */
//        private String expirationDateText;
        /**
         * （消费期限或品质维持期限） <= 300 characters
         * string <date> (소비기한 또는 품질유지기한) <= 300 characters
         */
        @Size(max = 300, message = "消费期限或品质维持期限不能超过300个字符")
        private String consumptionDate;
        /**
         * <未输入consumption Date时必需> (直接输入消费期限或品质维持期限) <= 300 characters
         * string <consumptionDate를 입력하지 않은 경우에는 필수> (소비기한 또는 품질유지기한 직접 입력) <= 300 characters
         */
        @Size(max = 300, message = "直接输入消费期限或品质维持期限不能超过300个字符")
        private String consumptionDateText;
        /**
         * （各包装单位内容物的容量（重量）、数量） <= 200 characters
         * string (포장 단위별 내용물의 용량(중량), 수량) <= 200 characters
         */
        @NotEmpty(message = "各包装单位内容物的容量（重量）、数量不能为空")
        @Size(max = 200, message = "各包装单位内容物的容量（重量）、数量不能超过200个字符")
        private String weight;
        /**
         * （各包装单位数量） <= 200 characters
         * string (포장 단위별 수량) <= 200 characters
         */
        @NotEmpty(message = "各包装单位数量不能为空")
        @Size(max = 200, message = "各包装单位数量不能超过200个字符")
        private String amount;
        /**
         * （原材料名（｢ 农水产品原产地标注等相关法律 ｣ 包括原产地标注） <= 1000 characters
         * 但含量仅限于原材料含量标示对象食品
         * string (원재료명(｢농수산물의 원산지 표시 등에 관한 법률｣에 따른 원산지 표시 포함) 및 함량) <= 1000 characters
         * 단, 함량의 경우에는 원재료 함량 표시대상 식품에 한함
         */
        @NotEmpty(message = "原材料名（｢ 农水产品原产地标注等相关法律 ｣ 包括原产地标注）不能为空")
        @Size(max = 1000, message = "原材料名（｢ 农水产品原产地标注等相关法律 ｣ 包括原产地标注）不能超过1000个字符")
        private String ingredients;
        /**
         * （营养成分） <= 1000 characters
         * 仅限营养成分标示对象食品
         * string (영양 성분) <= 1000 characters
         * 영양성분 표시대상 식품에 한함
         */
        @Size(max = 1000, message = "营养成分不能超过1000个字符")
        private String nutritionFacts;
        /**
         * （转基因食品标识）
         * boolean (유전자변형식품에 해당하는 경우의 표시)
         */
        @NotNull(message = "转基因食品标识不能为空")
        private Boolean geneticallyModified;
        /**
         * （消费者安全注意事项） <= 500 characters
         * ｢指食品等标识、广告相关法律施行规则｣ 第5条及[附表2]规定的标识事项
         * string (소비자안전을 위한 주의사항) <= 500 characters
         * ｢식품 등의 표시ㆍ광고에 관한 법률 시행규칙｣ 제5조 및 [별표 2]에 따른 표시사항을 말함
         */
        @NotEmpty(message = "消费者安全注意事项不能为空")
        @Size(max = 500, message = "消费者安全注意事项不能超过500个字符")
        private String consumerSafetyCaution;
        /**
         * <- true:根据《进口食品安全管理特别法》必须申报进口 - false: 无相关事项> (进口食品是否必须申报)。
         * boolean <- true: 수입식품안전관리특별법에 따른 수입 신고를 필함 - false: 해당 사항 없음> (수입식품의 경우 신고 필 유무)
         */
        @NotNull(message = "进口食品是否必须申报不能为空")
        private Boolean importDeclarationCheck;
        /**
         * （消费者咨询相关电话号码）<=30 characters
         * string (소비자 상담 관련 전화번호) <= 30 characters
         */
        @NotEmpty(message = "消费者咨询相关电话号码不能为空")
        @Size(max = 30, message = "消费者咨询相关电话号码不能超过30个字符")
        private String customerServicePhoneNumber;
    }

    /**
     * 健康功能食品商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class DietFood extends BaseDispute {
        /**
         * （产品名） <= 200 characters
         * string (제품명) <= 200 characters
         */
        @NotEmpty(message = "产品名不能为空")
        @Size(max = 200, message = "产品名不能超过200个字符")
        private String productName;
        /**
         * 制造企业 <= 200 characters
         * string (제조업소) <= 200 characters
         */
        @NotEmpty(message = "制造企业不能为空")
        @Size(max = 200, message = "制造企业不能超过200个字符")
        private String producer;
        /**
         * (所在地) <= 200 characters
         * 进口商品时，进口企业名、制造企业名及出口国名
         * string (소재지) <= 200 characters
         * 수입품의 경우 수입업소명, 제조업소명 및 수출국명
         */
        @NotEmpty(message = "所在地不能为空")
        @Size(max = 200, message = "所在地不能超过200个字符")
        private String location;
//        /**
//         * string <date> (유통기한) <= 300 characters
//         * 【Deprecated】
//         */
//        private String expirationDate;
//        /**
//         * string <expirationDate를 입력하지 않은 경우에는 필수> (유통기한 직접 입력) <= 300 characters
//         * 【Deprecated】
//         */
//        private String expirationDateText;
        /**
         * (消费期限) <= 300 characters
         * string <date> (소비기한) <= 300 characters
         */
        @Size(max = 300, message = "消费期限不能超过300个字符")
        private String consumptionDate;
        /**
         * <未输入consumptionDate时必需> (直接输入消费期限) <= 300 characters
         * string <consumptionDate를 입력하지 않은 경우에는 필수> (소비기한 직접 입력) <= 300 characters
         */
        @Size(max = 300, message = "直接输入消费期限不能超过300个字符")
        private String consumptionDateText;
        /**
         * （保管方法） <= 200 characters
         * string (보관방법) <= 200 characters
         */
        @NotEmpty(message = "保管方法不能为空")
        @Size(max = 200, message = "保管方法不能超过200个字符")
        private String storageMethod;
        /**
         * （各包装单位内容物的容量（重量）、数量） <= 200 characters
         * string (포장 단위별 내용물의 용량(중량), 수량) <= 200 characters
         */
        @NotEmpty(message = "各包装单位内容物的容量（重量）、数量不能为空")
        @Size(max = 200, message = "各包装单位内容物的容量（重量）、数量不能超过200个字符")
        private String weight;
        /**
         * （各包装单位数量） <= 200 characters
         * string (포장 단위별 수량) <= 200 characters
         */
        @NotEmpty(message = "各包装单位数量不能为空")
        @Size(max = 200, message = "各包装单位数量不能超过200个字符")
        private String amount;
        /**
         * （原料名称及含量） <= 1000 characters
         * ｢农水产品原产地标记等相关法律 ｣ 包括原产地标记
         * string (원료명 및 함량) <= 1000 characters
         * ｢농수산물의 원산지 표시 등에 관한 법률｣에 따른 원산지 표시 포함
         */
        @NotEmpty(message = "原料名称及含量不能为空")
        @Size(max = 1000, message = "原料名称及含量不能超过1000个字符")
        private String ingredients;
        /**
         * (营养信息) <= 1000 characters
         * string (영양 정보) <= 1000 characters
         */
        @NotEmpty(message = "营养信息不能为空")
        @Size(max = 1000, message = "营养信息不能超过1000个字符")
        private String nutritionFacts;
        /**
         * (功能信息) <= 1000 characters
         * string (기능 정보) <= 1000 characters
         */
        @NotEmpty(message = "功能信息不能为空")
        @Size(max = 1000, message = "功能信息不能超过1000个字符")
        private String specification;
        /**
         * （摄取量、摄取方法及摄取时的注意事项） <= 1000 characters
         * string (섭취량, 섭취 방법 및 섭취 시 주의사항) <= 1000 characters
         */
        @NotEmpty(message = "摄取量、摄取方法及摄取时的注意事项不能为空")
        @Size(max = 1000, message = "摄取量、摄取方法及摄取时的注意事项不能超过1000个字符")
        private String cautionAndSideEffect;
        /**
         * （内容为非预防及治疗疾病的医药品） <= 200 characters
         * string (질병의 예방 및 치료를 위한 의약품이 아니라는 내용의 문구) <= 200 characters
         */
        @NotEmpty(message = "内容为非预防及治疗疾病的医药品不能为空")
        @Size(max = 200, message = "内容为非预防及治疗疾病的医药品不能超过200个字符")
        private String nonMedicinalUsesMessage;
        /**
         * （相当于转基因健康功能食品的标示）
         * boolean (유전자변형건강기능식품에 해당하는 경우의 표시)
         */
        @NotNull(message = "相当于转基因健康功能食品的标示不能为空")
        private Boolean geneticallyModified;
        /**
         * <- true:根据进口食品安全管理特别法必须申报进口 - false: 无相关事项> (属于进口健康功能食品的情况)
         * boolean <- true: 수입식품안전관리특별법에 따른 수입 신고를 필함 - false: 해당 사항 없음> (수입 건강기능식품에 해당하는 경우)
         */
        @NotNull(message = "属于进口健康功能食品的情况不能为空")
        private Boolean importDeclarationCheck;
        /**
         * （消费者安全注意事项） <= 500 characters
         * 指食品等标识、广告相关法律施行规则｣ 第5条及[附表2]规定的标识事项
         * string (소비자안전을 위한 주의사항) <= 500 characters
         * ｢식품 등의 표시ㆍ광고에 관한 법률 시행규칙｣ 제5조 및 [별표 2]에 따른 표시사항을 말함
         */
        @NotEmpty(message = "消费者安全注意事项不能为空")
        @Size(max = 500, message = "消费者安全注意事项不能超过500个字符")
        private String consumerSafetyCaution;
        /**
         * （消费者咨询相关电话号码）<=30 characters
         * string (소비자 상담 관련 전화번호) <= 30 characters
         */
        @NotEmpty(message = "消费者咨询相关电话号码不能为空")
        @Size(max = 30, message = "消费者咨询相关电话号码不能超过30个字符")
        private String customerServicePhoneNumber;
    }

    /**
     * 婴幼儿用品商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class Kids extends BaseProduct {
        /**
         * (KC 认证信息) < = 200 characters
         * ｢仅限于儿童产品安全特别法｣规定的安全认证、安全确认、供应商适合性确认对象儿童产品
         * string (KC 인증정보) <= 200 characters
         * ｢어린이제품 안전 특별법｣에 따른 안전인증·안전확인·공급자적합성확인대상 어린이제품에 한함
         */
        @NotEmpty(message = "KC 认证信息不能为空")
        @Size(max = 200, message = "KC 认证信息不能超过200个字符")
        private String certificationType;
        /**
         * (大小) <= 200 characters
         * string (크기) <= 200 characters
         */
        @NotEmpty(message = "大小不能为空")
        @Size(max = 200, message = "大小不能超过200个字符")
        private String size;
        /**
         * (重量) <= 200 characters
         * 纤维产品等可以用尺寸信息代替
         * string (중량) <= 200 characters
         * 섬유제품 등의 경우 치수 정보로 대체 가능
         */
        @NotEmpty(message = "重量不能为空")
        @Size(max = 200, message = "重量不能超过200个字符")
        private String weight;
        /**
         * (颜色) <= 200 characters
         * string (색상) <= 200 characters
         */
        @NotEmpty(message = "颜色不能为空")
        @Size(max = 200, message = "颜色不能超过200个字符")
        private String color;
        /**
         * (材质) <= 200 characters
         * 纤维的混用率
         * string (재질) <= 200 characters
         * 섬유의 경우 혼용율
         */
        @NotEmpty(message = "材质不能为空")
        @Size(max = 200, message = "材质不能超过200个字符")
        private String material;
        /**
         * （使用年龄或推荐使用年龄） <= 30 characters
         * string (사용 연령 또는 권장 사용 연령) <= 30 characters
         */
        @NotEmpty(message = "使用年龄或推荐使用年龄不能为空")
        @Size(max = 30, message = "使用年龄或推荐使用年龄不能超过30个字符")
        private String recommendedAge;
        /**
         * <输入" yyy-MM" 格式> (同一型号发布日期) <= 300 characters
         * string <'yyyy-MM' 형식 입력> (동일 모델의 출시연월) <= 300 characters
         */
        @Size(max = 300, message = "同一型号发布日期不能超过300个字符")
        private String releaseDate;
        /**
         * （处理方法及处理时的注意事项、安全标识（注意、警告等））） <= 1500 characters
         * string (취급방법 및 취급 시 주의사항, 안전표시(주의, 경고 등)) <= 1500 characters
         */
        @NotEmpty(message = "处理方法及处理时的注意事项、安全标识（注意、警告等）不能为空")
        @Size(max = 1500, message = "处理方法及处理时的注意事项、安全标识（注意、警告等）不能超过1500个字符")
        private String caution;
        /**
         * <如无此选项， 则删除此元素并发送 。 > (大小和体重的限制) <= 200 characters
         * 穿戴或乘坐用儿童产品等有大小、体重限制的品目必须标明
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (크기·체중의 한계) <= 200 characters
         * 착용 또는 탑승용 어린이제품과 같이 크기·체중에 제한이 있는 품목의 경우 반드시 표시
         */
        @Size(max = 200, message = "大小和体重的限制不能超过200个字符")
        private String numberLimit;
    }

    /**
     * 乐器商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class MusicalInstrument extends MusicalSport {
        /**
         * （各商品详细规格） <= 1000 characters
         * string (상품별 세부 사양) <= 1000 characters
         */
        @NotEmpty(message = "各商品详细规格不能为空")
        @Size(max = 1000, message = "各商品详细规格不能超过1000个字符")
        private String detailContent;
        /**
         * <输入" yyy-MM" 格式> (同一型号发布日期) <= 300 characters
         * string <'yyyy-MM' 형식 입력> (동일 모델의 출시연월) <= 300 characters
         */
        @Size(max = 300, message = "同一型号发布日期不能超过300个字符")
        private String releaseDate;
    }

    /**
     * 体育用品商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class SportsEquipment extends MusicalSport {
        /**
         * (KC 认证信息) < = 200 characters
         * ｢仅限于电器用品及生活用品安全管理法｣规定的安全认证、安全确认、供应商适合性确认对象产品
         * string (KC 인증정보) <= 200 characters
         * ｢전기용품 및 생활용품 안전관리법｣에 따른 안전인증·안전확인·공급자적합성확인대상 제품에 한함
         */
        @NotEmpty(message = "KC 认证信息不能为空")
        @Size(max = 200, message = "KC 认证信息不能超过200个字符")
        private String certificationType;
        /**
         * (重量) <= 200 characters
         * string (중량) <= 200 characters
         */
        @NotEmpty(message = "重量不能为空")
        @Size(max = 200, message = "重量不能超过200个字符")
        private String weight;
        /**
         * <输入" yyy-MM" 格式> (同一型号发布日期) <= 300 characters
         * object <'yyyy-MM' 형식 입력> (동일 모델의 출시연월) <= 300 characters
         */
        private ReleaseDate releaseDate;
        /**
         * （各商品详细规格） <= 1000 characters
         * string (상품별 세부 사양) <= 1000 characters
         */
        @NotEmpty(message = "各商品详细规格不能为空")
        @Size(max = 1000, message = "各商品详细规格不能超过1000个字符")
        private String detailContent;
    }

    /**
     * 书籍商品信息提供告示
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class Books extends BaseDispute {
        /**
         * (图书名) <= 200 characters
         * string (도서명) <= 200 characters
         */
        @NotEmpty(message = "图书名不能为空")
        @Size(max = 200, message = "图书名不能超过200个字符")
        private String title;
        /**
         * (作者) <= 200 characters
         * string (저자) <= 200 characters
         */
        @NotEmpty(message = "作者不能为空")
        @Size(max = 200, message = "作者不能超过200个字符")
        private String author;
        /**
         * (出版社) <= 200 characters
         * string (출판사) <= 200 characters
         */
        @NotEmpty(message = "出版社不能为空")
        @Size(max = 200, message = "出版社不能超过200个字符")
        private String publisher;
        /**
         * (大小) <= 200 characters
         * string (크기) <= 200 characters
         */
        @NotEmpty(message = "大小不能为空")
        @Size(max = 200, message = "大小不能超过200个字符")
        private String size;
        /**
         * (页数) < = 30 characters
         * string (쪽수) <= 30 characters
         */
        @NotEmpty(message = "页数不能为空")
        @Size(max = 30, message = "页数不能超过30个字符")
        private String pages;
        /**
         * <如无此项， 删除此元素并传送 。 > (产品组成(如全集或成套时为单卷组成、 CD 等)) <= 1000 characters
         * 全集或套装时，单册构成，CD等
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (제품 구성(전집 또는 세트일 경우 낱권 구성, CD 등)) <= 1000 characters
         * 전집 또는 세트일경우 낱권 구성, CD 등
         */
        @Size(max = 1000, message = "产品组成(如全集或成套时为单卷组成、 CD 等)不能超过1000个字符")
        private String components;
        /**
         * < date> (发行日期) <= 200 characters
         * ｢根据出版文化产业振兴法｣ 第2条及第22条的规定,是指首次印刷每版的日子。 但是，区分每版时，因错别字的变更等轻微变更而重新印刷的情况除外。
         * string <date> (발행일) <= 200 characters
         * ｢출판문화산업 진흥법｣ 제2조 및 제22조의 규정에 따른 것으로, 매 판을 처음 인쇄한 날을 말함. 단, 매 판을 구분할 때에 오탈자의 변경 등 경미한 변경에 따라 다시 인쇄하는 경우는 제외
         */
        @Size(max = 200, message = "发行日期不能超过200个字符")
        private String publishDate;
        /**
         * <未输入publishDate时必需> (直接输入发行日期) <= 200 characters
         * ｢根据出版文化产业振兴法｣ 第2条及第22条的规定,是指首次印刷每版的日子。 但是，区分每版时，因错别字的变更等轻微变更而重新印刷的情况除外。
         * string <publishDate를 입력하지 않은 경우에는 필수> (발행일 직접 입력) <= 200 characters
         * ｢출판문화산업 진흥법｣ 제2조 및 제22조의 규정에 따른 것으로, 매 판을 처음 인쇄한 날을 말함. 단, 매 판을 구분할 때에 오탈자의 변경 등 경미한 변경에 따라 다시 인쇄하는 경우는 제외
         */
        @Size(max = 200, message = "直接输入发行日期不能超过200个字符")
        private String publishDateText;
        /**
         * (目录或书籍介绍) <= 1000 characters
         * 儿童学习教材包括使用年龄
         * string (목차 또는 책 소개) <= 1000 characters
         * 아동용 학습교재의 경우 사용 연령을 포함
         */
        @NotEmpty(message = "目录或书籍介绍不能为空")
        @Size(max = 1000, message = "目录或书籍介绍不能超过1000个字符")
        private String description;
    }

    /**
     * 物品租赁服务（书籍、幼儿用品、活动用品等）商品信息提供告示
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class RentalEtc extends BaseDispute {
        /**
         * (品名) <= 50 characters
         * string (품명) <= 50 characters
         */
        @NotEmpty(message = "品名不能为空")
        @Size(max = 50, message = "品名不能超过50个字符")
        private String itemName;
        /**
         * (型号) <= 50 characters
         * string (모델명) <= 50 characters
         */
        @NotEmpty(message = "型号不能为空")
        @Size(max = 50, message = "型号不能超过50个字符")
        private String modelName;
        /**
         * <如无此选项， 则删除此元素并传送 。 > (所有权转移条件) <= 500 characters
         * 仅限于所有权转移的情况，具体明示所有权转移所需的租赁期限或总租赁金额等条件。
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (소유권 이전 조건) <= 500 characters
         * 소유권이 이전되는 경우에 한하며, 소유권 이전에 필요한 렌탈 기간 또는 총 렌탈 금액 등 요건을 구체적으로 명시
         */
        @Size(max = 500, message = "所有权转移条件不能超过500个字符")
        private String ownershipTransferCondition;
        /**
         * （商品故障、丢失、损坏时消费者负责） <= 200 characters
         * string (상품의 고장, 분실, 훼손 시 소비자 책임) <= 200 characters
         */
        @NotEmpty(message = "商品故障、丢失、损坏时消费者负责不能为空")
        @Size(max = 200, message = "商品故障、丢失、损坏时消费者负责不能超过200个字符")
        private String payingForLossOrDamage;
        /**
         * （中途解约时退款标准）<=500 characters
         * string (중도 해약 시 환불 기준) <= 500 characters
         */
        @NotEmpty(message = "中途解约时退款标准不能为空")
        @Size(max = 500, message = "中途解约时退款标准不能超过500个字符")
        private String refundPolicyForCancel;
        /**
         * （消费者咨询相关电话号码）<=30 characters
         * string (소비자 상담 관련 전화번호) <= 30 characters
         */
        @NotEmpty(message = "消费者咨询相关电话号码不能为空")
        @Size(max = 30, message = "消费者咨询相关电话号码不能超过30个字符")
        private String customerServicePhoneNumber;
    }

    /**
     * 物品租赁服务（净水器、马桶、空气净化器等）商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class RentalHa extends RentalEtc {
        /**
         * （维护条件）
         * string (유지 보수 조건)
         */
        private String maintenance;
        /**
         * （产品规格）
         * string (제품 사양)
         */
        private String specification;
    }

    /**
     * 数码内容（音源、游戏、网络讲座等）商品信息提供告示
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class DigitalContents extends BaseDispute {
        /**
         * ( 制造商或供应商) < = 50 characters
         * string (제작자 또는 공급자) <= 50 characters
         */
        @NotEmpty(message = "制造商或供应商不能为空")
        @Size(max = 50, message = "制造商或供应商不能超过50个字符")
        private String producer;
        /**
         * (使用条件) < = 500 characters
         * string (이용 조건) <= 500 characters
         */
        @NotEmpty(message = "使用条件不能为空")
        @Size(max = 500, message = "使用条件不能超过500个字符")
        private String termsOfUse;
        /**
         * (使用时间) <= 200 characters
         * string (이용 기간) <= 200 characters
         */
        @NotEmpty(message = "使用时间不能为空")
        @Size(max = 200, message = "使用时间不能超过200个字符")
        private String usePeriod;
        /**
         * (商品提供方式) <= 30 characters
         * CD、 下载、 实时流媒体等
         * string (상품 제공 방식) <= 30 characters
         * CD, 다운로드, 실시간 스트리밍 등
         */
        @NotEmpty(message = "商品提供方式不能为空")
        @Size(max = 30, message = "商品提供方式不能超过30个字符")
        private String medium;
        /**
         * （最小系统规格，必备软件） <= 200 characters
         * string (최소 시스템 사양, 필수 소프트웨어) <= 200 characters
         */
        @NotEmpty(message = "最小系统规格，必备软件不能为空")
        @Size(max = 200, message = "最小系统规格，必备软件不能超过200个字符")
        private String requirement;
        /**
         * （取消认购及解除合同带来的效果） <= 500 characters
         * string (청약철회 및 계약의 해제, 해지에 따른 효과) <= 500 characters
         */
        @NotEmpty(message = "取消认购及解除合同带来的效果不能为空")
        @Size(max = 500, message = "取消认购及解除合同带来的效果不能超过500个字符")
        private String cancelationPolicy;
        /**
         * （消费者咨询相关电话号码）<=30 characters
         * string (소비자 상담 관련 전화번호) <= 30 characters
         */
        @NotEmpty(message = "消费者咨询相关电话号码不能为空")
        @Size(max = 30, message = "消费者咨询相关电话号码不能超过30个字符")
        private String customerServicePhoneNumber;
    }

    /**
     * 商品券/优惠券商品信息提供告示
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class GiftCard extends BaseDispute {
        /**
         * (发行者) < = 20 characters
         * string (발행자) <= 20 characters
         */
        @NotEmpty(message = "发行者不能为空")
        @Size(max = 20, message = "发行者不能超过20个字符")
        private String issuer;
        /**
         * （有效期开始日期） <= 200 characters
         * string <date> (유효기간 시작일) <= 200 characters
         */
        @Size(max = 200, message = "有效期开始日期不能超过200个字符")
        private String periodStartDate;
        /**
         * （有效期结束日期） <= 200 characters
         * string <date> (유효기간 종료일) <= 200 characters
         */
        @Size(max = 200, message = "有效期结束日期不能超过200个字符")
        private String periodEndDate;
        /**
         * （有效期（购买日起00日）） <= 200 characters
         * integer <int32> (유효기간(구매일로부터 00일)) <= 200 characters
         */
        @Size(max = 200, message = "有效期（购买日起00日）不能超过200个字符")
        private Integer periodDays;
        /**
         * (使用条件) <= 200 characters
         * string (이용 조건) <= 200 characters
         * 유효기간 경과 시 보상 기준, 사용 제한 품목 제한 및 기간 등
         */
        @NotEmpty(message = "使用条件不能为空")
        @Size(max = 200, message = "使用条件不能超过200个字符")
        private String termsOfUse;
        /**
         * <useStorePlace, useStoreAddressId, useStoreUrl 三者之一必须> (可用卖场(场所)) <= 330 characters
         * string <useStorePlace, useStoreAddressId, useStoreUrl 셋 중 하나는 필수> (이용 가능 매장(장소)) <= 330 characters
         */
        @Size(max = 330, message = "可用卖场(场所)不能超过330个字符")
        private String useStorePlace;
        /**
         * （可用卖场（销售者地址ID））
         * integer <int64> (이용 가능 매장(판매자 주소 ID))
         */
        private Long useStoreAddressId;
        /**
         * <useStorePlace, useStoreAddressId, useStoreUrl 三者之一必须> (可用卖场(URL)) <= 330 characters
         * string <useStorePlace, useStoreAddressId, useStoreUrl 셋 중 하나는 필수> (이용 가능 매장(URL)) <= 330 characters
         */
        @Size(max = 330, message = "可用卖场(URL)不能超过330个字符")
        private String useStoreUrl;
        /**
         * （余额退税条件） <= 500 characters
         * string (잔액 환급 조건) <= 500 characters
         */
        @NotEmpty(message = "余额退税条件不能为空")
        @Size(max = 500, message = "余额退税条件不能超过500个字符")
        private String refundPolicy;
        /**
         * （消费者咨询相关电话号码）<=30 characters
         * string (소비자 상담 관련 전화번호) <= 30 characters
         */
        @NotEmpty(message = "消费者咨询相关电话号码不能为空")
        @Size(max = 30, message = "消费者咨询相关电话号码不能超过30个字符")
        private String customerServicePhoneNumber;
    }

    /**
     * 手机优惠券商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class MobileCoupon extends BaseDispute {
        /**
         * (发行者) < = 20 characters
         * string (발행자) <= 20 characters
         */
        @NotEmpty(message = "发行者不能为空")
        @Size(max = 20, message = "发行者不能超过20个字符")
        private String issuer;
        /**
         * （有效期，使用条件） <= 200 characters
         * 超过有效期时包含补偿标准
         * string (유효기간, 이용 조건) <= 200 characters
         * 유효기간 경과 시 보상 기준 포함
         */
        @NotEmpty(message = "有效期，使用条件不能为空")
        @Size(max = 200, message = "有效期，使用条件不能超过200个字符")
        private String usableCondition;
        /**
         * （可用卖场）<=330 characters
         * string (이용 가능 매장) <= 330 characters
         */
        @NotEmpty(message = "可用卖场不能为空")
        @Size(max = 330, message = "可用卖场不能超过330个字符")
        private String usableStore;
        /**
         * （退款条件与方法） <= 200 characters
         * string (환불 조건 및 방법) <= 200 characters
         */
        @NotEmpty(message = "退款条件与方法不能为空")
        @Size(max = 200, message = "退款条件与方法不能超过200个字符")
        private String cancelationPolicy;
        /**
         * （消费者咨询相关电话号码）<=30 characters
         * string (소비자 상담 관련 전화번호) <= 30 characters
         */
        @NotEmpty(message = "消费者咨询相关电话号码不能为空")
        @Size(max = 30, message = "消费者咨询相关电话号码不能超过30个字符")
        private String customerServicePhoneNumber;
    }

    /**
     * 电影/演出商品信息提供告示
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class MovieShow extends BaseDispute {
        /**
         * (主办或策划) <= 200 characters
         * 限于演出
         * string (주최 또는 기획) <= 200 characters
         * 공연에 한함
         */
        @NotEmpty(message = "主办或策划不能为空")
        @Size(max = 200, message = "主办或策划不能超过200个字符")
        private String sponsor;
        /**
         * (主演) <= 200 characters
         * 限于演出
         * string (주연) <= 200 characters
         * 공연에 한함
         */
        @NotEmpty(message = "主演不能为空")
        @Size(max = 200, message = "主演不能超过200个字符")
        private String actor;
        /**
         * (观看等级) <= 200 characters
         * string (관람 등급) <= 200 characters
         */
        @NotEmpty(message = "观看等级不能为空")
        @Size(max = 200, message = "观看等级不能超过200个字符")
        private String rating;
        /**
         * （上映·演出时间）<=200 characters
         * string (상영ㆍ공연 시간) <= 200 characters
         */
        @NotEmpty(message = "上映·演出时间不能为空")
        @Size(max = 200, message = "上映·演出时间不能超过200个字符")
        private String showTime;
        /**
         * （上映·演出场所）<=200 characters
         * string (상영ㆍ공연 장소) <= 200 characters
         */
        @NotEmpty(message = "上映·演出场所不能为空")
        @Size(max = 200, message = "上映·演出场所不能超过200个字符")
        private String showPlace;
        /**
         * （取消预售条件） <= 200 characters
         * string (예매 취소 조건) <= 200 characters
         */
        @NotEmpty(message = "取消预售条件不能为空")
        @Size(max = 200, message = "取消预售条件不能超过200个字符")
        private String cancelationCondition;
        /**
         * （取消·退款方法） <= 200 characters
         * string (취소ㆍ환불 방법) <= 200 characters
         */
        @NotEmpty(message = "取消·退款方法不能为空")
        @Size(max = 200, message = "取消·退款方法不能超过200个字符")
        private String cancelationPolicy;
        /**
         * （消费者咨询相关电话号码）<=30 characters
         * string (소비자 상담 관련 전화번호) <= 30 characters
         */
        @NotEmpty(message = "消费者咨询相关电话号码不能为空")
        @Size(max = 30, message = "消费者咨询相关电话号码不能超过30个字符")
        private String customerServicePhoneNumber;
    }

    /**
     * 其他劳务商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class EtcService extends BaseDispute {
        /**
         * (服务提供商) <= 200 characters
         * string (서비스 제공 사업자) <= 200 characters
         */
        @NotEmpty(message = "服务提供商不能为空")
        @Size(max = 200, message = "服务提供商不能超过200个字符")
        private String serviceProvider;
        /**
         * (可确认已获得法律认证、许可等时,与之相关的事项) <= 200 characters
         * string (법에 의한 인증ㆍ허가 등을 받았음을 확인할 수 있는 경우 그에 대한 사항) <= 200 characters
         */
        @NotEmpty(message = "可确认已获得法律认证、许可等时,与之相关的事项不能为空")
        @Size(max = 200, message = "可确认已获得法律认证、许可等时,与之相关的事项不能超过200个字符")
        private String certificateDetails;
        /**
         * (使用条件) <= 200 characters
         * 可用时间、场所、追加费用等
         * string (이용 조건) <= 200 characters
         * 이용 가능 기간·장소, 추가 비용 등
         */
        @NotEmpty(message = "使用条件不能为空")
        @Size(max = 200, message = "使用条件不能超过200个字符")
        private String usableCondition;
        /**
         * （取消、中途解除、解除条件及退款标准） <= 200 characters
         * string (취소ㆍ중도해약ㆍ해지 조건 및 환불 기준) <= 200 characters
         */
        @NotEmpty(message = "取消、中途解除、解除条件及退款标准不能为空")
        @Size(max = 200, message = "取消、中途解除、解除条件及退款标准不能超过200个字符")
        private String cancelationStandard;
        /**
         * （取消·退款方法） <= 200 characters
         * string (취소ㆍ환불 방법) <= 200 characters
         */
        @NotEmpty(message = "取消·退款方法不能为空")
        @Size(max = 200, message = "取消·退款方法不能超过200个字符")
        private String cancelationPolicy;
        /**
         * （消费者咨询相关电话号码）<=30 characters
         * string (소비자 상담 관련 전화번호) <= 30 characters
         */
        @NotEmpty(message = "消费者咨询相关电话号码不能为空")
        @Size(max = 30, message = "消费者咨询相关电话号码不能超过30个字符")
        private String customerServicePhoneNumber;
    }

    /**
     * 生活化学品商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class Biochemistry extends BaseDispute {
        /**
         * （品目及产品名）<=200 characters
         * string (품목 및 제품명) <= 200 characters
         */
        @NotEmpty(message = "品目及产品名不能为空")
        @Size(max = 200, message = "品目及产品名不能超过200个字符")
        private String productName;
        /**
         * （用途与剂型） <= 200 characters
         * 漂白剂的话，系列一起标记
         * string (용도 및 제형) <= 200 characters
         * 표백제의 경우 계열을 함께 표시
         */
        @NotEmpty(message = "用途与剂型不能为空")
        @Size(max = 200, message = "用途与剂型不能超过200个字符")
        private String dosageForm;
        /**
         * <输入" yyy-MM" 格式> (生产日期) <= 300 characters
         * string <'yyyy-MM' 형식 입력> (제조연월) <= 300 characters
         */
        @Size(max = 300, message = "生产日期不能超过300个字符")
        private String packDate;
        /**
         * <未输入packDate时必需> (直接输入生产年月) <= 300 characters
         * string <packDate를 입력하지 않은 경우에는 필수> (제조연월 직접 입력) <= 300 characters
         */
        @Size(max = 300, message = "直接输入生产年月不能超过300个字符")
        private String packDateText;
        /**
         * <输入" yyy-MM" 格式> (保质期) <= 300 characters
         * 无相应事项时省略，在expirationDateText中输入"无相应事项"
         * string <'yyyy-MM' 형식 입력> (유통기한) <= 300 characters
         * 해당 사항이 없으면 생략하고 expirationDateText에 '해당사항 없음' 입력
         */
        @Size(max = 300, message = "保质期不能超过300个字符")
        private String expirationDate;
        /**
         * <未输入expiration Date时必需> （直接输入保质期） <= 300 characters
         * 无相应事项时输入"无相应事项"
         * string <expirationDate를 입력하지 않은 경우에는 필수> (유통기한 직접 입력) <= 300 characters
         * 해당 사항이 없으면 '해당사항 없음' 입력
         */
        @Size(max = 300, message = "直接输入保质期不能超过300个字符")
        private String expirationDateText;
        /**
         * （重量、容量、买入、大小） <= 1500 characters
         * string (중량·용량·매수·크기) <= 1500 characters
         */
        @NotEmpty(message = "重量、容量、买入、大小不能为空")
        @Size(max = 1500, message = "重量、容量、买入、大小不能超过1500个字符")
        private String weight;
        /**
         * （功效·效果） <= 200 characters
         * 仅限批准对象日用化工产品
         * string (효능ㆍ효과) <= 200 characters
         * 승인 대상 생활화학제품에 한함
         */
        @NotEmpty(message = "功效·效果不能为空")
        @Size(max = 200, message = "功效·效果不能超过200个字符")
        private String effect;
        /**
         * <如无此选项， 则删除此元素并发送 。 > (进口商) <= 200 characters
         * 限于进口产品
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (수입자) <= 200 characters
         * 수입제품에 한함
         */
        @Size(max = 200, message = "进口商不能超过200个字符")
        private String importer;
        /**
         * （制造国） <= 200 characters
         * string (제조국) <= 200 characters
         */
        @NotEmpty(message = "制造国不能为空")
        @Size(max = 200, message = "制造国不能超过200个字符")
        private String producer;
        /**
         * （制造商）<=200 characters
         * string (제조자(사)) <= 200 characters
         */
        @NotEmpty(message = "制造商不能为空")
        @Size(max = 200, message = "制造商不能超过200个字符")
        private String manufacturer;
        /**
         * （是否为儿童保护包装对象产品） <= 200 characters
         * string (어린이보호포장 대상 제품 여부) <= 200 characters
         */
        @NotEmpty(message = "是否为儿童保护包装对象产品不能为空")
        @Size(max = 200, message = "是否为儿童保护包装对象产品不能超过200个字符")
        private String childProtection;
        /**
         * （产品中使用的化学药品名称）<=200 characters
         * ｢安全确认对象生活化学产品指定及安全、标示标准｣ [附表6]规定的标示对象化学物质,主要物质、保存剂、可过敏反应物质等名称
         * string (제품에 사용된 화학 물질 명칭) <= 200 characters
         * ｢안전확인대상 생활화학제품 지정 및 안전·표시기준｣ [별표6]에 따른 표시대상 화학물질로서 주요물질, 보존제, 알레르기반응가능물질 등의 명칭
         */
        @NotEmpty(message = "产品中使用的化学药品名称不能为空")
        @Size(max = 200, message = "产品中使用的化学药品名称不能超过200个字符")
        private String chemicals;
        /**
         * （使用注意事项） <= 500 characters
         * string (사용상 주의사항) <= 500 characters
         */
        @NotEmpty(message = "使用注意事项不能为空")
        @Size(max = 500, message = "使用注意事项不能超过500个字符")
        private String caution;
        /**
         * （安全标准符合确认申报编号或安全确认对象生活化学产品批准编号） <= 200 characters
         * 化学产品安全法施行日（含过渡期）前生产、进口可能存在危害的产品，应标明依照前法自检编号。
         * string (안전기준적합확인신고번호 또는 안전확인대상 생활화학제품승인번호) <= 200 characters
         * 화학제품안전법 시행일(경과조치 기간 포함) 이전에 생산·수입된 위해우려제품의 경우 종전 법에 따른 자가 검사번호를 표시
         */
        @NotEmpty(message = "安全标准符合确认申报编号或安全确认对象生活化学产品批准编号不能为空")
        @Size(max = 200, message = "安全标准符合确认申报编号或安全确认对象生活化学产品批准编号不能超过200个字符")
        private String safeCriterionNo;
        /**
         * （消费者咨询相关电话号码）<=30 characters
         * string (소비자 상담 관련 전화번호) <= 30 characters
         */
        @NotEmpty(message = "消费者咨询相关电话号码不能为空")
        @Size(max = 30, message = "消费者咨询相关电话号码不能超过30个字符")
        private String customerServicePhoneNumber;
    }

    /**
     * 杀生物制品商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class Biocidal extends BaseDispute {
        /**
         * （产品名称及杀生物制品类型）<=200 characters
         * string (제품명 및 살생물제품유형) <= 200 characters
         */
        @NotEmpty(message = "产品名称及杀生物制品类型不能为空")
        @Size(max = 200, message = "产品名称及杀生物制品类型不能超过200个字符")
        private String productName;
        /**
         * （重量或容量及标准使用量） <= 200 characters
         * string (중량 또는 용량 및 표준 사용량) <= 200 characters
         */
        @NotEmpty(message = "重量或容量及标准使用量不能为空")
        @Size(max = 200, message = "重量或容量及标准使用量不能超过200个字符")
        private String weight;
        /**
         * （功效·效果） <= 200 characters
         * string (효능ㆍ효과) <= 200 characters
         */
        @NotEmpty(message = "功效·效果不能为空")
        @Size(max = 200, message = "功效·效果不能超过200个字符")
        private String effect;
        /**
         * （使用对象及使用范围） <= 200 characters
         * string (사용 대상자 및 사용 범위) <= 200 characters
         */
        @NotEmpty(message = "使用对象及使用范围不能为空")
        @Size(max = 200, message = "使用对象及使用范围不能超过200个字符")
        private String rangeOfUse;
        /**
         * <如无此选项， 则删除此元素并发送 。 > (进口商) <= 200 characters
         * 限于进口产品
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (수입자) <= 200 characters
         * 수입제품에 한함
         */
        @Size(max = 200, message = "进口商不能超过200个字符")
        private String importer;
        /**
         * （制造国） <= 200 characters
         * string (제조국) <= 200 characters
         */
        @NotEmpty(message = "制造国不能为空")
        @Size(max = 200, message = "制造国不能超过200个字符")
        private String producer;
        /**
         * （制造商）<=200 characters
         * string (제조자(사)) <= 200 characters
         */
        @NotEmpty(message = "制造商不能为空")
        @Size(max = 200, message = "制造商不能超过200个字符")
        private String manufacturer;
        /**
         * （是否为儿童保护包装对象产品） <= 200 characters
         * string (어린이보호포장 대상 제품 여부) <= 200 characters
         */
        @NotEmpty(message = "是否为儿童保护包装对象产品不能为空")
        @Size(max = 200, message = "是否为儿童保护包装对象产品不能超过200个字符")
        private String childProtection;
        /**
         * （杀菌物质、纳米物质、有害化学物质（或重点控制物质）名称）<=200 characters
         * string (살생물물질, 나노물질, 유해화학물질(또는 중점관리물질)의 명칭) <= 200 characters
         */
        @NotEmpty(message = "杀菌物质、纳米物质、有害化学物质（或重点控制物质）名称不能为空")
        @Size(max = 200, message = "杀菌物质、纳米物质、有害化学物质（或重点控制物质）名称不能超过200个字符")
        private String harmfulChemicalSubstance;
        /**
         * （标明产品有害性、危害性） <= 200 characters
         * string (제품 유해성ㆍ위해성 표시) <= 200 characters
         */
        @NotEmpty(message = "标明产品有害性、危害性不能为空")
        @Size(max = 200, message = "标明产品有害性、危害性不能超过200个字符")
        private String maleficence;
        /**
         * （使用方法与使用注意事项） <= 500 characters
         * string (사용 방법 및 사용상 주의사항) <= 500 characters
         */
        @NotEmpty(message = "使用方法与使用注意事项不能为空")
        @Size(max = 500, message = "使用方法与使用注意事项不能超过500个字符")
        private String caution;
        /**
         * （批准文号）<=200 characters
         * string (승인번호) <= 200 characters
         */
        @NotEmpty(message = "批准文号不能为空")
        @Size(max = 200, message = "批准文号不能超过200个字符")
        private String approvalNumber;
        /**
         * （消费者咨询电话号码）<=30 characters
         * string (소비자상담 전화번호) <= 30 characters
         */
        @NotEmpty(message = "消费者咨询电话号码不能为空")
        @Size(max = 30, message = "消费者咨询电话号码不能超过30个字符")
        private String customerServicePhoneNumber;
        /**
         * （保质期） <= 300 characters
         * 输入" yyy-MM-dd" 类型
         * string <date> (유통기한) <= 300 characters
         * 'yyyy-MM-dd' 형식 입력
         */
        @Size(max = 300, message = "保质期不能超过300个字符")
        private String expirationDate;
        /**
         * （直接输入保质期） <= 300 characters
         * 未输入expirationDate时必需
         * string (유통기한 직접 입력) <= 300 characters
         * expirationDate를 입력하지 않은 경우에는 필수
         */
        @Size(max = 300, message = "直接输入保质期不能超过300个字符")
        private String expirationDateText;
    }

    /**
     * 手机商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class CellPhone extends BaseDispute {
        /**
         * (品目) <= 50 characters
         * string (품목) <= 50 characters
         */
        @NotEmpty(message = "品目不能为空")
        @Size(max = 50, message = "品目不能超过50个字符")
        private String itemName;
        /**
         * (型号) <= 50 characters
         * string (모델명) <= 50 characters
         */
        @NotEmpty(message = "型号不能为空")
        @Size(max = 50, message = "型号不能超过50个字符")
        private String modelName;
        /**
         * (KC 认证信息) < = 50 characters
         * ｢仅限于电器用品及生活用品安全管理法｣规定的安全认证、安全确认、供应商合格性确认对象产品及｢传播法｣规定的合格认证、合格登记对象器材
         * string (KC 인증정보) <= 50 characters
         * ｢전기용품 및 생활용품 안전관리법｣에 따른 안전인증·안전확인·공급자적합성확인대상 제품 및 ｢전파법｣에 따른 적합인증·적합등록 대상 기자재에 한함
         */
        @NotEmpty(message = "KC 认证信息不能为空")
        @Size(max = 50, message = "KC 认证信息不能超过50个字符")
        private String certificationType;
        /**
         * <输入" yyy-MM" 格式> (同一型号发布日期) <= 300 characters
         * string <'yyyy-MM' 형식 입력> (동일 모델의 출시연월) <= 300 characters
         */
        @Size(max = 300, message = "同一型号发布日期不能超过300个字符")
        private String releaseDate;
        /**
         * <未输入releaseDate时必需> (同一型号上市年月日直接输入) <= 300 characters
         * string <releaseDate를 입력하지 않은 경우에는 필수> (동일 모델 출시연월일 직접 입력) <= 300 characters
         */
        @Size(max = 300, message = "同一型号上市年月日直接输入不能超过300个字符")
        private String releaseDateText;
        /**
         * （制造商）<=200 characters
         * string (제조자(사)) <= 200 characters
         */
        @NotEmpty(message = "制造商不能为空")
        @Size(max = 200, message = "制造商不能超过200个字符")
        private String manufacturer;
        /**
         * <如无此选项， 则删除此元素并发送 。 > (进口商) <= 200 characters
         * 进口商品同时标明进口人
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (수입자) <= 200 characters
         * 수입품의 경우 수입자를 함께 표시
         */
        @Size(max = 200, message = "进口商不能超过200个字符")
        private String importer;
        /**
         * （制造国） <= 200 characters
         * string (제조국) <= 200 characters
         */
        @NotEmpty(message = "制造国不能为空")
        @Size(max = 200, message = "制造国不能超过200个字符")
        private String producer;
        /**
         * (大小) < = 50 characters
         * string (크기) <= 50 characters
         */
        @NotEmpty(message = "大小不能为空")
        @Size(max = 50, message = "大小不能超过50个字符")
        private String size;
        /**
         * (重量) <= 50 characters
         * string (무게) <= 50 characters
         */
        @NotEmpty(message = "重量不能为空")
        @Size(max = 50, message = "重量不能超过50个字符")
        private String weight;
        /**
         * (移动通信公司) <= 50 characters
         * string (이동통신사) <= 50 characters
         */
        @NotEmpty(message = "移动通信公司不能为空")
        @Size(max = 50, message = "移动通信公司不能超过50个字符")
        private String telecomType;
        /**
         * （加入步骤）<=50 characters
         * string (가입절차) <= 50 characters
         */
        @NotEmpty(message = "加入步骤不能为空")
        @Size(max = 50, message = "加入步骤不能超过50个字符")
        private String joinProcess;
        /**
         * （消费者的额外负担事项） <= 50 characters
         * 加入费、USIM卡购买费等需要追加负担的金额、附加服务、义务使用期限、违约金等
         * string (소비자의 추가적인 부담사항) <= 50 characters
         * 가입비, 유심카드 구입비 등 추가로 부담하여야 할 금액, 부가서비스, 의무사용기간, 위약금 등
         */
        @NotEmpty(message = "消费者的额外负担事项不能为空")
        @Size(max = 50, message = "消费者的额外负担事项不能超过50个字符")
        private String extraBurden;
        /**
         * (主要规格) <= 500 characters
         * string (주요 사양) <= 500 characters
         */
        @NotEmpty(message = "主要规格不能为空")
        @Size(max = 500, message = "主要规格不能超过500个字符")
        private String specification;
        /**
         * （质量保证标准） <= 500 characters
         * string (품질 보증 기준) <= 500 characters
         */
        @NotEmpty(message = "质量保证标准不能为空")
        @Size(max = 500, message = "质量保证标准不能超过500个字符")
        private String warrantyPolicy;
        /**
         * (售后服务负责人和电话号码)<=200 characters
         * string (A/S 책임자와 전화번호) <= 200 characters
         */
        @NotEmpty(message = "售后服务负责人和电话号码不能为空")
        @Size(max = 200, message = "售后服务负责人和电话号码不能超过200个字符")
        private String afterServiceDirector;
    }

    /**
     * 其他商品信息提供公告
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class Etc extends BaseDispute {
        /**
         * (品名) <= 50 characters
         * string (품명) <= 50 characters
         */
        @NotEmpty(message = "品名不能为空")
        @Size(max = 50, message = "品名不能超过50个字符")
        private String itemName;
        /**
         * (型号) <= 50 characters
         * string (모델명) <= 50 characters
         */
        @NotEmpty(message = "型号不能为空")
        @Size(max = 50, message = "型号不能超过50个字符")
        private String modelName;
        /**
         * <如无此事项，则删除该要素并发送。 > (可确认已依法获得认证、许可等事项时) <= 500 characters
         * string <해당 사항이 없으면 이 요소를 삭제하고 전송합니다.> (법에 의한 인증, 허가 등을 받았음을 확인할 수 있는 경우 그에 대한 사항) <= 500 characters
         */
        @Size(max = 500, message = "可确认已依法获得认证、许可等事项时不能超过500个字符")
        private String certificateDetails;
        /**
         * （制造商）<=200 characters
         * string (제조자(사)) <= 200 characters
         */
        @NotEmpty(message = "制造商不能为空")
        @Size(max = 200, message = "制造商不能超过200个字符")
        private String manufacturer;
        /**
         * (售后服务负责人) <= 200 characters
         * string (A/S 책임자) <= 200 characters
         */
        @Size(max = 200, message = "售后服务负责人不能超过200个字符")
        private String afterServiceDirector;
        /**
         * <未输入after Service Director时必需> (消费者咨询相关电话号码) <= 30 characters
         * string <afterServiceDirector를 입력하지 않은 경우에는 필수> (소비자 상담 관련 전화번호) <= 30 characters
         */
        @Size(max = 30, message = "消费者咨询相关电话号码不能超过30个字符")
        private String customerServicePhoneNumber;
    }

    /**
     * 同一型号发布日期)
     */
    @Getter
    @Setter
    @ToString(callSuper = true)
    public static class ReleaseDate {
        private Integer year;
        private ReleaseDateMonth month;
        private Integer monthValue;
        private Boolean leapYear;
    }

    public enum ReleaseDateMonth {
        JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER;
    }
}
